﻿Public Class xtf_ABMmodelo

    Dim ulg_row As DataRow
    Dim obj_modelo As cls_modelo_ = Nothing

    Public Sub New()
        InitializeComponent()
        Cargarmarca_()
        liv_marcamodelo.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        AgregarValidaciones()
    End Sub

    Public Overrides Sub CargarObjetos()
        Cargarmarca_()
    End Sub

    Private Sub Cargarmarca_()
        liv_marca.Items.Clear()
        Dim marca_ As New cls_marca_
        If marca_.CargarTodos Then
            For Each marca As cls_marca_ In marca_.Items
                Dim Elemento As New CustomListItem
                Elemento.objeto = marca
                Elemento.text = marca.ToString
                liv_marca.Items.Add(Elemento)
            Next
            liv_marca.Enabled = True
        Else
            liv_marca.Enabled = False
        End If
    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado
            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"
            obj_modelo = New cls_modelo_
            btn_Registro.Enabled = False
            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef modelo As cls_modelo_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_modelo) Then
            obj_modelo = New cls_modelo_
        End If
        obj_modelo = modelo
        frm_listado = listado
        ulg_row = row

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_modelo.ToString
        txt_ID.Text = obj_modelo.idmodelo
        txt_Nombre.Text = obj_modelo.nombre
        txt_Nombrecorto.Text = obj_modelo.nombrecorto

        btn_Registro.Enabled = True

        liv_marcamodelo.Items.Clear()
        liv_marcamodelo.Tag.Clear()
        If Not IsNothing(obj_modelo.marcamodelo_) Then
            If Not IsNothing(obj_modelo.marcamodelo_.Items) Then
                For Each marcamodelo As cls_marcamodelo_ In obj_modelo.marcamodelo_.Items
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = marcamodelo
                    Elemento.text = marcamodelo.marca.ToString
                    liv_marcamodelo.Items.Add(Elemento)
                Next
            End If
        End If

        Me.Show()

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean
        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If

        'REGISTROS DUPLICADOS----------------------------------------------------
        Dim col As New Collections.Generic.List(Of stc_campoValor)
        Dim comp1 As New stc_campoValor
        comp1.campo = "nombre"
        comp1.valor = txt_Nombre.Text
        col.Add(comp1)
        If ComprobarDuplicado("modelo_", col, "idmodelo <> " & IIf(txt_ID.Text = "", 0, txt_ID.Text)) Then
            ErrManagerShow("000010", Me, " Dato: Nombre")
            Return False
        End If
        'REGISTROS DUPLICADOS----------------------------------------------------

        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then
            obj_modelo.nombre = txt_Nombre.Text
            obj_modelo.nombrecorto = txt_Nombrecorto.Text

            'Guardo marcas------------------------------------------------------
            If IsNothing(obj_modelo.marcamodelo_) Then
                obj_modelo.marcamodelo_ = New cls_marcamodelo_
            End If
            If IsNothing(obj_modelo.marcamodelo_.Items) Then
                obj_modelo.marcamodelo_.Items = New Collections.Generic.List(Of cls_marcamodelo_)
            End If
            obj_modelo.marcamodelo_.Items = New Collections.Generic.List(Of cls_marcamodelo_)
            For Each Elemento As CustomListItem In liv_marcamodelo.Items
                obj_modelo.marcamodelo_.Items.Add(Elemento.objeto)
            Next
            For Each Elemento As CustomListItem In liv_marcamodelo.Tag
                If CType(Elemento.objeto, cls_marcamodelo_).idmarcamodelo <> 0 Then
                    CType(Elemento.objeto, cls_marcamodelo_).Eliminar(CType(Elemento.objeto, cls_marcamodelo_).idmarcamodelo)
                End If
            Next
            '---------------------------------------------------------------------



            If txt_ID.Text = "" Then
                obj_modelo.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADOmodelo_).AgregarItem(obj_modelo)
                End If
                Modificar(obj_modelo, frm_listado, ulg_row)
            Else
                obj_modelo.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_LISTADOmodelo_).ModificarItem(obj_modelo, ulg_row)
                End If
                Modificar(obj_modelo, frm_listado, ulg_row)
            End If

            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False

        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_modelo.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_modelo.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub


    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

#Region "marca_modelo"
    Private Sub btn_AgregarA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Agregar.Click
        For i As Integer = 0 To liv_marca.SelectedItems.Count - 1
            Dim Elemento As New CustomListItem '= liv_marca.SelectedItems(0)
            Elemento.objeto = New cls_marcamodelo_
            CType(Elemento.objeto, cls_marcamodelo_).idmarca = CType(CType(liv_marca.SelectedItems(i), CustomListItem).objeto, cls_marca_).idmarca
            Elemento.text = CType(Elemento.objeto, cls_marcamodelo_).marca.ToString
            Dim flag As Boolean = False
            For Each customitem As CustomListItem In liv_marcamodelo.Items
                Dim marcamodelo As cls_marcamodelo_ = customitem.objeto
                If marcamodelo.idmarca = CType(Elemento.objeto, cls_marcamodelo_).idmarca Then
                    flag = True
                End If
            Next
            If flag = False Then
                liv_marcamodelo.Items.Add(Elemento)
            End If
        Next
    End Sub

    Private Sub btn_AgregarTodosA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_AgregarTodos.Click
        For i As Integer = 0 To liv_marca.Items.Count - 1
            Dim Elemento As New CustomListItem '= liv_marca.SelectedItems(0)
            Elemento.objeto = New cls_marcamodelo_
            CType(Elemento.objeto, cls_marcamodelo_).idmarca = CType(CType(liv_marca.Items(i), CustomListItem).objeto, cls_marca_).idmarca
            Elemento.text = CType(Elemento.objeto, cls_marcamodelo_).marca.ToString
            Dim flag As Boolean = False
            For Each customitem As CustomListItem In liv_marcamodelo.Items
                Dim marcamodelo As cls_marcamodelo_ = customitem.objeto
                If marcamodelo.idmarca = CType(Elemento.objeto, cls_marcamodelo_).idmarca Then
                    flag = True
                End If
            Next
            If flag = False Then
                liv_marcamodelo.Items.Add(Elemento)
            End If
        Next
    End Sub

    Private Sub btn_QuitarA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Quitar.Click
        If liv_marcamodelo.SelectedItems.Count > 0 Then
            For i As Integer = liv_marcamodelo.SelectedItems.Count - 1 To 0 Step -1
                Dim Elemento As CustomListItem
                Elemento = liv_marcamodelo.SelectedItems(i)
                liv_marcamodelo.Items.Remove(Elemento)
                liv_marcamodelo.Tag.add(Elemento)
            Next
        End If
    End Sub

    Private Sub btn_QuitarTodosA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_QuitarTodos.Click
        If liv_marcamodelo.Items.Count > 0 Then
            For i As Integer = liv_marcamodelo.Items.Count - 1 To 0 Step -1
                Dim Elemento As CustomListItem
                Elemento = liv_marcamodelo.Items(i)
                liv_marcamodelo.Items.Remove(Elemento)
                liv_marcamodelo.Tag.add(Elemento)
            Next
        End If
    End Sub
#End Region
End Class